/* 层次遍历 */

#include <iostream>
#include "BiTreefun.h"
using namespace std;
#define maxsize 50

// 层次遍历
void level(BTNode *p)
{
  // 创建队列
  int front = 0, rear = 0;
  BTNode *que[maxsize];
  
  // 如果访问的结点不为空
  if (p != NULL)
  {
    // 结点进队列
    que[++rear] = p;
    
    // 如果队列不为空
    while (front != rear)
    {
      // 结点出队列
      p = que[++front];
      
      // 打印结点
      cout << p->data << " ";
      
      // 左孩子结点进队列
      if (p->lchild != NULL)
        que[++rear] = p->lchild;
      
      // 右孩子结点进队列
      if (p->rchild != NULL)
        que[++rear] = p->rchild;
    }
  }
}

int main()
{
  // 创建二叉树
  BTNode *T = create_bitree();
  
  // 层次遍历
  level(T);
}